/**
 * 全局会话管理服务
 * 统一管理用户会话状态存储和获取
 */

// 常量定义
const USER_ID_KEY = 'userID';
const USER_PASSWORD_KEY = 'userPassword';
const USER_ROLE_KEY = 'userRole';
const ACTIVE_PATH_KEY = 'activePath';
const TOKEN_KEY = 'token';

/**
 * 会话管理器
 */
const SessionManager = {
  /**
   * 存储用户ID
   * @param {string|number} id 用户ID
   */
  setUserId(id) {
    if (id) {
      window.sessionStorage.setItem(USER_ID_KEY, id);
      // console.log('SessionManager: 已存储用户ID', id);
    }
  },

  /**
   * 获取用户ID
   * @returns {string|null} 用户ID或null
   */
  getUserId() {
    return window.sessionStorage.getItem(USER_ID_KEY);
  },

  /**
   * 存储用户密码
   * @param {string} password 用户密码
   */
  setUserPassword(password) {
    if (password) {
      window.sessionStorage.setItem(USER_PASSWORD_KEY, password);
    }
  },

  /**
   * 获取用户密码
   * @returns {string|null} 用户密码或null
   */
  getUserPassword() {
    return window.sessionStorage.getItem(USER_PASSWORD_KEY);
  },

  /**
   * 存储用户角色
   * @param {string|number} role 用户角色
   */
  setUserRole(role) {
    if (role !== undefined && role !== null) {
      window.sessionStorage.setItem(USER_ROLE_KEY, role);
      // console.log('SessionManager: 已存储用户角色', role);
    }
  },

  /**
   * 获取用户角色
   * @returns {string|null} 用户角色或null
   */
  getUserRole() {
    return window.sessionStorage.getItem(USER_ROLE_KEY);
  },

  /**
   * 存储活动路径
   * @param {string} path 活动路径
   */
  setActivePath(path) {
    if (path) {
      window.sessionStorage.setItem(ACTIVE_PATH_KEY, path);
    }
  },

  /**
   * 获取活动路径
   * @returns {string|null} 活动路径或null
   */
  getActivePath() {
    return window.sessionStorage.getItem(ACTIVE_PATH_KEY);
  },

  /**
   * 存储令牌
   * @param {string} token 认证令牌
   */
  setToken(token) {
    if (token) {
      window.sessionStorage.setItem(TOKEN_KEY, token);
    }
  },

  /**
   * 获取令牌
   * @returns {string|null} 认证令牌或null
   */
  getToken() {
    return window.sessionStorage.getItem(TOKEN_KEY);
  },

  /**
   * 存储用户登录信息
   * @param {Object} data 包含id、password和role的对象
   */
  setUserInfo(data) {
    if (!data) return;
    
    if (data.id) this.setUserId(data.id);
    if (data.password) this.setUserPassword(data.password);
    if (data.role !== undefined) this.setUserRole(data.role);
    
    // console.log('SessionManager: 已更新用户信息', {
    //   id: data.id,
    //   role: data.role,
    //   hasPassword: !!data.password
    // });
  },

  /**
   * 获取用户信息
   * @returns {Object} 包含用户ID、密码和角色的对象
   */
  getUserInfo() {
    return {
      id: this.getUserId(),
      password: this.getUserPassword(),
      role: this.getUserRole()
    };
  },

  /**
   * 检查用户是否已登录
   * @returns {boolean} 是否已登录
   */
  isLoggedIn() {
    const id = this.getUserId();
    const password = this.getUserPassword();
    return !!(id && password);
  },

  /**
   * 清除所有会话数据
   */
  clear() {
    window.sessionStorage.clear();
    // console.log('SessionManager: 已清除所有会话数据');
  },

  /**
   * 调试用：打印所有会话数据
   */
  debug() {
    // console.log('======== 会话存储调试信息 ========');
    // console.log('用户ID:', this.getUserId());
    // console.log('角色:', this.getUserRole());
    // console.log('活动路径:', this.getActivePath());
    // console.log('所有键:', Object.keys(window.sessionStorage));
    // console.log('==================================');
  }
};

export default SessionManager;
